Das verwendete Dataset des Projekts: https://www.kaggle.com/datasets/gregorut/videogamesales
Dies besteht aus den Daten von https://www.vgchartz.com/ für die Jahre 1980 bis 2016
und umfasst die Folgenden Spalten bzw.Daten.
Bevor wir mit der Analyse der Daten beginnen können Stellen wir erstmal ein paar Thesen bzw. Fragestellungen auf die wir im laufe des Projekts hinterfragen bzw beantworten wollen.
Welche Jahre sind die besten in der Anzahl der releasten Games und Sales? Antwort
Werden heutzutage mehr Spiele Releast als noch 1980? Antwort
Welche Jahre sind die besten in Anzahl Sales pro Game? Werden neuere Spiele automatisch mehr Gekauft? Antwort
Welche Plattform ist die beste in Anzahl verkäufen? Welche in Anzahl der Game Releases? Antwort
Haben Ältere Platformen Automatisch mehr Spiele und Verkäufe? Antwort
Favorisieren verschiedene Regionen verschiedene Platformen? Verkaufen die Regionenheimischen Platformen automatisch auch die meisten Spiele? Antwort
Wie Entwickeln sich die Verkäufe pro Platform im laufe der Jahre? Haben Platformen kurz nach Release den größten “Hype”? Antwort
Bestimmte Publisher häufen sich in Anzahl der Spiele und der
Verkäufen (z.B. Nintendo, EA, Activision Blizzard) Antwort
Gibt es regionale Unterschiede in den Publishern? Werden Regioneninterne Publisher Favoritisiert? Antwort
Wie sind die Genres der Spiele verteilt? Häufen sich bestimmte
Genres bei Anzahl und Verkaufszahlen? Gibt es Genres die
besser/schlechter Performen als sie sollten? Antwort
Gibt es regionale Unterschiede in den Genres? (Gibt es Regionen die Spezifische Genres Favorisieren welche in anderen Regionen nur eine geringe Rolle spielt?) Antwort
Wie haben sich die Genres über die Jahre entwickelt? Antwort
Gibt es Genres die mal großen Einfluss hatten und nun Bedeutungslos sind? Antwort
Gibt es Publisher die bestimmte Genres bevorzugen bzw. Publisher deren Games eines bestimmten Genres sich besonders gut Verkaufen? Antwort
Nach dem Vorstellen der Daten und dem aufstellen der initialen Thesen
können wir nun mit dem einlesen der Daten beginnen.
Zusätzlich erstellen wir noch eine Farbpalette und importieren die
Librarys
library(readr)
library(tidyverse)
library(forcats)
library(plotly)
library(knitr, warn.conflicts = FALSE, quietly=TRUE)
library(RColorBrewer)
library(stringr)
library(dygraphs)
library(xts)
suppressPackageStartupMessages(library(dplyr))
myPalette <- brewer.pal(10, "Paired")
vgsales <- read_csv("vgsales.csv")
Als erstes schauen wir uns die Anzahl der Videospielreleases, die Anzahl der Verkäufe und die Verkäufe pro Spiel im laufe der Jahre an.
Unsere erste These war “Welche Jahre sind die besten in der Anzahl der releasten Games und Sales?” Um dieser Fragestellung auf den Grund zugehen müssen wir zuerst einmal die Daten der Tabelle vgsales mithilfe der Funktion group_by(Year) anhand der Jahre Zusammenfassen. Nun erhalten wir eine nach den Jahren zusammengefasste Tabelle deren Einträge wir mit der Funktion dplyr::summarize(Anzahl =n()) abzählen und als Wert Anzahl abspeichern. Aufgrund der für diese analyse Fehlerhaften Daten verwenden wir noch die Funktion filter() um alle fehlenden Jahreseinträge sowie die Jahre 2020 und 2017 herauszufiltern. Letztere Jahre sind daher fehlerhaft, da der Datensatz 2016 erstellt wurde. Diese Daten speichern wir als data.frame in der Variable grouped ab. Im folgenden verwenden wir ebenjenes data.frame um nur die Einträge Jahr und Anzahl zu selectieren und in der Variable filtered abzuspeichern. Die erhaltene Tabelle hat nun zwei Spalten: Jahr und Anzahl. Desweiteren erstellen wir zwei Weitere Variablen ax und ay welche beide eine Liste mit nur einem Attribut sind: “Title”. Nun verwenden wir plot_ly() um mithilfe der type = ‘scatter’ und mode = ‘lines’ Parameter ein Liniendiagramm zu erstellen. Außerdem nutzen wir die layout() funktion um einen titel zu erstellen, sowie mithilfe unsere beiden Variablen ax und ay um die Achsen zu beschriften
grouped <- vgsales %>%
group_by(Year) %>%
dplyr::summarize(Anzahl =n()) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
as.data.frame()
filtered <- grouped %>% select(Year,Anzahl)
ax <- list(
title = "Year"
)
ay <- list(
title = "Amount"
)
filtered %>%
plot_ly(x = ~Year, y = ~Anzahl, type = 'scatter', mode = 'lines', fill = 'tozeroy' ,colors = myPalette) %>%
layout(title="Game Amount from 1980-2016",
xaxis = ax,
yaxis = ay
)
Betrachten wir einmal das entstandene Diagramm. Zwischen 1980 und 1993 sind hier kaum unterschiede festzustellen und die Schwankungen können aufgrund der geringen Zahl der Veröffentlichungen (zwischen 14 und 49) vernachlässigt werden.Ab 1993 können wir dann eine stetiges Wachstum feststellen welches 1998 vorerst den höchstwert erreicht. In den Jahren 1999 und 2000 geht die Anzahl erst einmal leicht zurück bevor sich der Wert bis 2002 von 349 auf 829 mehr als verdoppelt. Bis 2004 ist wiederum ein leichter Rückgang festzustellen auf welchem ein Stetiges Wachstum zum Höchstwert von 1428 (2008) sowie 1431 (2009) folgt. Danach folgt ein extremer und mit unterbrechung von 2014 (582) und 2015 (614) stetiger Rückgang in den Releasezahlen auf einen Stand von 344 im Jahr 2016.
Sehen wir uns diese Zahlen einmal genauer an kommt die Frage auf Woran diese Extremen Zahlen in den veröffentlichungen zurückzuführen sind? An diesem Punkt der Analyse können wir nur Spekulieren die Spitzen könnten allerdings an den Veröffentlichungen großer, den Markt bestimmenden Plattformen wie der PS2/3, der Xbox und den Platformen von Nintendo wie Gamecube oder Wii zurückzuführen sein. Hierzu aber später mehr.
Den größten per Game Verkaufswert gab es allerdings 1984,1985 und 1989. Neuere spiele hingegen verkaufen sich durchschnittlich schlechter was durch das größere Angebot auch zu erwarten ist.
grouped <- vgsales %>%
group_by(Year) %>%
dplyr::summarize(gr_sum = sum(Global_Sales)) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
as.data.frame()
filtered <- grouped %>% select(Year,gr_sum)
ax <- list(
title = "Year"
)
ay <- list(
title = " Game Sales per Year (in mio)"
)
filtered %>%
plot_ly(x = ~Year, y = ~gr_sum, type = 'scatter', mode = 'lines', fill = 'tozeroy' ,colors = myPalette) %>%
layout(title="Game Sales from 1980-2016",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Year) %>%
dplyr::summarize(gr_sum = sum(Global_Sales)/n()) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
as.data.frame()
filtered <- grouped %>% select(Year,gr_sum)
ax <- list(
title = "Year"
)
ay <- list(
title = "Sales per Game"
)
filtered %>%
plot_ly(x = ~Year, y = ~gr_sum, type = 'scatter', mode = 'lines', fill = 'tozeroy' ,colors = myPalette) %>%
layout(title="Sales per Game from 1980-2016",
xaxis = ax,
yaxis = ay
)
Nun betrachten wir die Anzahl der Videospiele aufgelistet nach Platform.
Hierbei stellt sich die Frage ob ältere Plattformen mehr Spielereleases haben wovon auszugehen ist. Hierzu verwenden wir ein einfaches Balkendiagramm welche eine gute erste übersicht bietet.
grouped <- vgsales %>%
group_by(Platform) %>%
summarize(Anzahl =n())
ordered <- grouped[order(grouped$Anzahl), decreasing = FALSE]
ordered$Platform <- as_factor(ordered$Platform)
ax <- list(
title = "Platform"
)
ay <- list(
title = "Anzahl"
)
ordered%>%
plot_ly() %>%
add_bars(x=~fct_reorder(Platform,Anzahl, .desc="true"),
y=~Anzahl,
name="Game Amount by Platform" ,colors = myPalette) %>%
layout(title="Game Amount by Platform",
xaxis = ax,
yaxis = ay
)
Dies lässt sich nicht generell bestätigen aber ein Trend ist definitiv erkennbar.
Nun stellt sich die Frage welche Plattform die meisten Sales hat.
grouped <- vgsales %>%
group_by(Platform) %>%
summarize(sum(Global_Sales)) %>%
rename(
Global_Sales = "sum(Global_Sales)"
)
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Platform <- as_factor(ordered$Platform)
ax <- list(
title = "Platform"
)
ay <- list(
title = "Global Sales (in mio)"
)
ordered%>%
plot_ly() %>%
add_bars(x=~fct_reorder(Platform,Global_Sales, .desc="true"),
y=~Global_Sales,
name="Sales Amount by Platform" ,colors = myPalette) %>%
layout(title="Sales Amount by Platform",
xaxis = ax,
yaxis = ay
)
Wie sich herausstellt ist dies jedoch nicht die Platform welches die meisten Gamereleases hat.
Nun analysieren wir die unterschiede der Regionen.
Hierzu verwenden wir sowohl sorted bar plots sowie um einen besseren Überblick über die Prozentualverteilung der Konsolen in den einzelnen Regionen Pie charts.
Einzuwenden hierbei ist, dass die Regionen natürlich unterschiedlich viele Einwohner haben.Ein vergleich der absoluten Saleswerte ist hierbei natürlich nur wenig ausschlaggebend zeigt aber einen generellen beliebtheitstrend der Konsolen auf.
grouped <- vgsales %>%
group_by(Platform) %>%
summarize(sum(EU_Sales)) %>%
rename(
Global_Sales = "sum(EU_Sales)"
)
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Platform <- as_factor(ordered$Platform)
ax <- list(
title = "Platform"
)
ay <- list(
title = "EU Sales (in mio)"
)
ordered%>%
plot_ly() %>%
add_bars(x=~fct_reorder(Platform,Global_Sales, .desc="true"),
y=~Global_Sales,
name="EU Sales Amount by Platform" ,colors = myPalette) %>%
layout(title="EU Sales Amount by Platform",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Platform) %>%
summarize(sum(NA_Sales)) %>%
rename(
Global_Sales = "sum(NA_Sales)"
)
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Platform <- as_factor(ordered$Platform)
ax <- list(
title = "Platform"
)
ay <- list(
title = "NA Sales (in mio)"
)
ordered%>%
plot_ly() %>%
add_bars(x=~fct_reorder(Platform,Global_Sales, .desc="true"),
y=~Global_Sales,
name="NA Sales Amount by Platform" ,colors = myPalette) %>%
layout(title="NA Sales Amount by Platform",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Platform) %>%
summarize(sum(JP_Sales)) %>%
rename(
Global_Sales = "sum(JP_Sales)"
)
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Platform <- as_factor(ordered$Platform)
ax <- list(
title = "Platform"
)
ay <- list(
title = "JP Sales (in mio)"
)
ordered%>%
plot_ly() %>%
add_bars(x=~fct_reorder(Platform,Global_Sales, .desc="true"),
y=~Global_Sales,
name="JP Sales Amount by Platform" ,colors = myPalette) %>%
layout(title="JP Sales Amount by Platform",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Platform) %>%
summarize(sum(EU_Sales)) %>%
rename(
Global_Sales = "sum(EU_Sales)"
)
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Platform <- as_factor(ordered$Platform)
ax <- list(
title = "Platform"
)
ay <- list(
title = "EU Sales (in mio)"
)
ordered%>%
plot_ly() %>%
add_pie(values =~Global_Sales,labels=~Platform,textinfo='label+percent',
name="EU Sales Amount by Publisher" ,colors = myPalette) %>%
layout(title="EU Sales Amount by Publisher",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Platform) %>%
summarize(sum(NA_Sales)) %>%
rename(
Global_Sales = "sum(NA_Sales)"
)
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Platform <- as_factor(ordered$Platform)
ax <- list(
title = "Platform"
)
ay <- list(
title = "NA Sales (in mio)"
)
ordered%>%
plot_ly() %>%
add_pie(values =~Global_Sales,labels=~Platform,textinfo='label+percent',
name="NA Sales Amount by Publisher" ,colors = myPalette) %>%
layout(title="NA Sales Amount by Publisher",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Platform) %>%
summarize(sum(JP_Sales)) %>%
rename(
Global_Sales = "sum(JP_Sales)"
)
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Platform <- as_factor(ordered$Platform)
ax <- list(
title = "Platform"
)
ay <- list(
title = "JP Sales (in mio)"
)
ordered%>%
plot_ly() %>%
add_pie(values =~Global_Sales,labels=~Platform,textinfo='label+percent',
name="JP Sales Amount by Platform" ,colors = myPalette) %>%
layout(title="JP Sales Amount by Platform",
xaxis = ax,
yaxis = ay
)
Im genensatz zur EU, in der das japanische unternehmen Sony mit der PS2 und PS3 die liste anführt, hat in den USA das Landeseigene softwareunternehmen Microsoft mit der Xbox360 die Nase vorn. In Japan hingegen ist wie zu erwarten der japanische hersteller Nintendo mit dem DS der Markführer.
Um sich das Ganze etwas genauer anzuschauen betrachten wir die Anzahl der Sales per Platform im Verlauf der Jahre.
Um eine überladung des Diagramms zu verhindern werden hier allerdings nur Plattformen mit mindestens 60 mio in Sales im entsprechenden Jahr berücksichtigt. Dies hat den Nachteil das einige z.T wichtige Daten Fehlen, ein Weglassen ebenjenes Filters fürt aber zu kompletter Unübersichtlichkeit.
grouped <- vgsales %>%
group_by(Year, Platform) %>%
dplyr::summarize(gr_sum = sum(Global_Sales)) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>% filter(gr_sum>60)%>%
as.data.frame()
grouped <- grouped %>%arrange(desc(gr_sum)) %>%
group_by(Year, Platform) %>%
slice(1:3)
filtered <- grouped %>% select(Year,Platform,gr_sum)
ax <- list(
title = "Year"
)
ay <- list(
title = "Sales per Platform (in mio)"
)
filtered %>%
plot_ly(x = ~Year, y = ~gr_sum, type = 'scatter', mode = 'none', stackgroup = 'one',color = ~Platform ,colors = myPalette)%>%
layout(title="Sales per Platform from 1980-2016",
xaxis = ax,
yaxis = ay
)
Hier erkennen wir das Platform, wie zu erwarten, meist kurz nach Release die größten Verkaufszahlen verzeichnen.
Nun stellt sich die Frage ob sich neben bestimmten Platformen auch bestimmte Entwickler/Publisher häufen. Hierbei gehen wir davon aus das vermutlich Nintendo und EA die Liste anführen. Hierzu verwenden wir wiederum sorted Bar-Charts und kürzen die Namen um die Begriffe “Entertainment”, “Interactive”, “Game”, “Games” und “Studios” da dies die Namen nur unnötig verlängert und Filtern Publisher mit Geringen Anzahl an Game Releases.
grouped <- vgsales %>%
group_by(Publisher) %>%
summarize(Anzahl =n()) %>%
filter(Anzahl>100) %>% filter(Publisher!="Unknown")
PublisherSales <- vgsales %>%
group_by(Publisher) %>%
summarize(sum(Global_Sales)) %>%
rename(
Global_Sales = "sum(Global_Sales)"
) %>% filter(Global_Sales>300)
grouped <- grouped %>% filter(Publisher %in% PublisherSales$Publisher)
ordered <- grouped[order(grouped$Anzahl), decreasing = FALSE]
ordered$Publisher <-str_remove_all(ordered$Publisher, "Entertainment")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Interactive")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Studios")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Games")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Game")
ordered$Publisher <- as_factor(ordered$Publisher)
ax <- list(
title = "Publisher"
)
ay <- list(
title = "Anzahl"
)
ordered%>%
plot_ly() %>%
add_bars(x=~fct_reorder(Publisher,Anzahl, .desc="true"),
y=~Anzahl,
name="Game Amount by Publisher"
,colors = myPalette) %>%
layout(title="Game Amount by Publisher",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Publisher) %>%
summarize(Anzahl =n(),sum(Global_Sales)) %>%
filter(Anzahl>100) %>%
rename(
Global_Sales = "sum(Global_Sales)"
)
PublisherSales <- vgsales %>%
group_by(Publisher) %>%
summarize(sum(Global_Sales)) %>%
rename(
Global_Sales = "sum(Global_Sales)"
) %>% filter(Global_Sales>300)
grouped <- grouped %>% filter(Publisher %in% PublisherSales$Publisher)
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Publisher <-str_remove_all(ordered$Publisher, "Entertainment")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Interactive")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Studios")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Games")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Game")
ordered$Publisher <- as_factor(ordered$Publisher)
ax <- list(
title = "Publisher"
)
ay <- list(
title = "Global Sales (in mio)"
)
ordered%>%
plot_ly() %>%
add_bars(x=~fct_reorder(Publisher,Global_Sales, .desc="true"),
y=~Global_Sales,
name="Sales Amount by Publisher"
,colors = myPalette) %>%
layout(title="Sales Amount by Publisher",
xaxis = ax,
yaxis = ay
)
Auffällig ist hier die diskrepanz zwischen Anzahl der Spielereleases und Anzahl der Spieleverkäufe. Im gegensatz zu der Anzahl der Spiele (bei dem Nintendo nur auf platz 6 Sitz) dominiert Nintendo im anzahl der Sales.
Nun stellt sich wieder einmal die Frage ob sich dies in Bestimmten teilen der Welt unterscheidet und hierzu verwenden wir wiederum die SortedBar/Piechart kombo und die bereits genannten Filter
grouped <- vgsales %>%
group_by(Publisher) %>%
summarize(Anzahl =n(),sum(EU_Sales)) %>%
filter(Anzahl>100) %>%
rename(
Global_Sales = "sum(EU_Sales)"
)
PublisherSales <- vgsales %>%
group_by(Publisher) %>%
summarize(sum(Global_Sales)) %>%
rename(
Global_Sales = "sum(Global_Sales)"
) %>% filter(Global_Sales>300)
grouped <- grouped %>% filter(Publisher %in% PublisherSales$Publisher)
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Publisher <-str_remove_all(ordered$Publisher, "Entertainment")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Interactive")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Studios")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Games")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Game")
ordered$Publisher <- as_factor(ordered$Publisher)
ax <- list(
title = "Publisher"
)
ay <- list(
title = "EU Sales (in mio)"
)
ordered%>%
plot_ly() %>%
add_bars(x=~fct_reorder(Publisher,Global_Sales, .desc="true"),
y=~Global_Sales,
name="EU Sales Amount by Publisher"
,colors = myPalette) %>%
layout(title="EU Sales Amount by Publisher",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Publisher) %>%
summarize(Anzahl =n(),sum(NA_Sales)) %>%
filter(Anzahl>100) %>%
rename(
Global_Sales = "sum(NA_Sales)"
)
PublisherSales <- vgsales %>%
group_by(Publisher) %>%
summarize(sum(Global_Sales)) %>%
rename(
Global_Sales = "sum(Global_Sales)"
) %>% filter(Global_Sales>300)
grouped <- grouped %>% filter(Publisher %in% PublisherSales$Publisher)
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Publisher <-str_remove_all(ordered$Publisher, "Entertainment")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Interactive")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Studios")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Games")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Game")
ordered$Publisher <- as_factor(ordered$Publisher)
ax <- list(
title = "Publisher"
)
ay <- list(
title = "NA Sales (in mio)"
)
ordered%>%
plot_ly() %>%
add_bars(x=~fct_reorder(Publisher,Global_Sales, .desc="true"),
y=~Global_Sales,
name="NA Sales Amount by Publisher"
,colors = myPalette) %>%
layout(title="NA Sales Amount by Publisher",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Publisher) %>%
summarize(Anzahl =n(),sum(JP_Sales)) %>%
filter(Anzahl>100) %>%
rename(
Global_Sales = "sum(JP_Sales)"
)
PublisherSales <- vgsales %>%
group_by(Publisher) %>%
summarize(sum(Global_Sales)) %>%
rename(
Global_Sales = "sum(Global_Sales)"
) %>% filter(Global_Sales>300)
grouped <- grouped %>% filter(Publisher %in% PublisherSales$Publisher)
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Publisher <-str_remove_all(ordered$Publisher, "Entertainment")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Interactive")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Studios")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Games")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Game")
ordered$Publisher <- as_factor(ordered$Publisher)
ax <- list(
title = "Publisher"
)
ay <- list(
title = "JP Sales (in mio)"
)
ordered%>%
plot_ly() %>%
add_bars(x=~fct_reorder(Publisher,Global_Sales, .desc="true"),
y=~Global_Sales,
name="JP Sales Amount by Publisher"
,colors = myPalette) %>%
layout(title="JP Sales Amount by Publisher",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Publisher) %>%
summarize(Anzahl =n(),sum(EU_Sales)) %>%
filter(Anzahl>100) %>%
rename(
Global_Sales = "sum(EU_Sales)"
)
PublisherSales <- vgsales %>%
group_by(Publisher) %>%
summarize(sum(Global_Sales)) %>%
rename(
Global_Sales = "sum(Global_Sales)"
) %>% filter(Global_Sales>300)
grouped <- grouped %>% filter(Publisher %in% PublisherSales$Publisher)
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Publisher <-str_remove_all(ordered$Publisher, "Entertainment")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Interactive")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Studios")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Games")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Game")
ordered$Publisher <- as_factor(ordered$Publisher)
ax <- list(
title = "Publisher"
)
ay <- list(
title = "EU Sales (in mio)"
)
ordered%>%
plot_ly() %>%
add_pie(values =~Global_Sales,labels=~Publisher,
name="EU Sales Amount by Publisher"
,colors = myPalette) %>%
layout(title="EU Sales Amount by Publisher",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Publisher) %>%
summarize(Anzahl =n(),sum(NA_Sales)) %>%
filter(Anzahl>100) %>%
rename(
Global_Sales = "sum(NA_Sales)"
)
PublisherSales <- vgsales %>%
group_by(Publisher) %>%
summarize(sum(Global_Sales)) %>%
rename(
Global_Sales = "sum(Global_Sales)"
) %>% filter(Global_Sales>300)
grouped <- grouped %>% filter(Publisher %in% PublisherSales$Publisher)
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Publisher <-str_remove_all(ordered$Publisher, "Entertainment")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Interactive")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Studios")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Games")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Game")
ordered$Publisher <- as_factor(ordered$Publisher)
ax <- list(
title = "Publisher"
)
ay <- list(
title = "NA Sales (in mio)"
)
ordered%>%
plot_ly() %>%
add_pie(values =~Global_Sales,labels=~Publisher,textinfo='label+percent',
name="NA Sales Amount by Publisher"
,colors = myPalette) %>%
layout(title="NA Sales Amount by Publisher",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Publisher) %>%
summarize(Anzahl =n(),sum(JP_Sales)) %>%
filter(Anzahl>100) %>%
rename(
Global_Sales = "sum(JP_Sales)"
)
PublisherSales <- vgsales %>%
group_by(Publisher) %>%
summarize(sum(Global_Sales)) %>%
rename(
Global_Sales = "sum(Global_Sales)"
) %>% filter(Global_Sales>300)
grouped <- grouped %>% filter(Publisher %in% PublisherSales$Publisher)
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ordered$Publisher <-str_remove_all(ordered$Publisher, "Entertainment")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Interactive")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Studios")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Games")
ordered$Publisher <-str_remove_all(ordered$Publisher, "Game")
ordered$Publisher <- as_factor(ordered$Publisher)
ax <- list(
title = "Publisher"
)
ay <- list(
title = "JP Sales (in mio)"
)
ordered%>%
plot_ly() %>%
add_pie(values =~Global_Sales,labels=~Publisher,
name="JP Sales Amount by Publisher"
,colors = myPalette) %>%
layout(title="JP Sales Amount by Publisher",
xaxis = ax,
yaxis = ay
)
Zwischen EU und US lassen sich hier kaum Unterschiede feststellen in Japan hingegen ist eine verschiebung zu erkennen. Japanische Publisher führen hierbei die Liste an und drängen andere große unternehmen von den Top spots.
Nun schauen wir uns die Genreverteilung von Videospielen an. Hierzu verwenden wir wiederum die Altbekannte sorted Bar/Pie-Chart kombo.
grouped <- vgsales %>%
group_by(Genre) %>%
summarize(Anzahl =n())
grouped$Anzahl<-as_vector(grouped$Anzahl)
ordered <- grouped[order(grouped$Anzahl), decreasing = FALSE]
ordered$Genre <- as_factor(ordered$Genre)
ax <- list(
title = "Genre"
)
ay <- list(
title = "Anzahl"
)
ordered%>%
plot_ly() %>%
add_bars(x=~fct_reorder(Genre,Anzahl, .desc="true"),
y=~Anzahl,
name="Amount by Genre"
,colors = myPalette) %>%
layout(title="Amount by Genre",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Genre) %>%
summarize(Anzahl =n())
grouped$Anzahl<-as_vector(grouped$Anzahl)
ordered <- grouped[order(grouped$Anzahl), decreasing = FALSE]
ordered$Genre <- as_factor(ordered$Genre)
ax <- list(
title = "Genre"
)
ay <- list(
title = "Anzahl"
)
ordered%>%
plot_ly() %>%
add_pie(values =~Anzahl,labels=~Genre,
name="Amount by Genre"
,colors = myPalette) %>%
layout(title="Amount by Genre",
xaxis = ax,
yaxis = ay
)
Hierbei ist zu erkennen das Action und Sports ein Großteil (34%) der Genres ausmachen. Die Frage ist jedoch wie sind die Verkäufe verteilt und beeinflusst die anzahl der Games pro Genre irgendwie die Verkaufszahlen?
grouped <- vgsales %>%
group_by(Genre) %>%
summarize(sum(Global_Sales)) %>%
rename(
Global_Sales = "sum(Global_Sales)"
)
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ax <- list(
title = "Genre"
)
ay <- list(
title = "Sales (in mio)"
)
ordered%>%
plot_ly() %>%
add_bars(x=~fct_reorder(Genre,Global_Sales, .desc="true"),
y=~Global_Sales,
name="Sales by Genre"
,colors = myPalette) %>%
layout(title="Sales by Genre",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Genre) %>%
summarize(sum(Global_Sales)) %>%
rename(
Global_Sales = "sum(Global_Sales)"
)
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ax <- list(
title = "Genre"
)
ay <- list(
title = "Sales (in mio)"
)
ordered%>%
plot_ly() %>%
add_pie(values =~Global_Sales,labels=~Genre,
name="Sales by Genre"
,colors = myPalette) %>%
layout(title="Sales by Genre",
xaxis = ax,
yaxis = ay
)
Hierbei erkennen wir das es einige Unterschiede gibt Action und sports machen jedoch weiterhin einen Grosteil des Markts aus.
Nun schauen wir uns die Unterscheide in den Regionen an.
grouped <- vgsales %>%
group_by(Genre) %>%
summarize(sum(EU_Sales)) %>%
rename(
Global_Sales = "sum(EU_Sales)"
)
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ax <- list(
title = "Genre"
)
ay <- list(
title = "Sales (in mio)"
)
ordered%>%
plot_ly() %>%
add_bars(x=~fct_reorder(Genre,Global_Sales, .desc="true"),
y=~Global_Sales,
name="Sales by Genre (EU)"
,colors = myPalette) %>%
layout(title="Sales by Genre (EU)",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Genre) %>%
summarize(sum(NA_Sales)) %>%
rename(
Global_Sales = "sum(NA_Sales)"
)
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ax <- list(
title = "Genre"
)
ay <- list(
title = "Sales (in mio)"
)
ordered%>%
plot_ly() %>%
add_bars(x=~fct_reorder(Genre,Global_Sales, .desc="true"),
y=~Global_Sales,
name="Sales by Genre (NA)"
,colors = myPalette) %>%
layout(title="Sales by Genre (NA)",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Genre) %>%
summarize(sum(JP_Sales)) %>%
rename(
Global_Sales = "sum(JP_Sales)"
)
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ax <- list(
title = "Genre"
)
ay <- list(
title = "Sales"
)
ordered%>%
plot_ly() %>%
add_bars(x=~fct_reorder(Genre,Global_Sales, .desc="true"),
y=~Global_Sales,
name="Sales by Genre (JP)" ,colors = myPalette) %>%
layout(title="Sales by Genre (JP)",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Genre) %>%
summarize(sum(EU_Sales)) %>%
rename(
Global_Sales = "sum(EU_Sales)"
)
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ax <- list(
title = "Genre"
)
ay <- list(
title = "Sales (in mio)"
)
ordered%>%
plot_ly() %>%
add_pie(values =~Global_Sales,labels=~Genre,
name="Sales by Genre (EU)" ,colors = myPalette) %>%
layout(title="Sales by Genre (EU)",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Genre) %>%
summarize(sum(NA_Sales)) %>%
rename(
Global_Sales = "sum(NA_Sales)"
)
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ax <- list(
title = "Genre"
)
ay <- list(
title = "Sales (in mio)"
)
ordered%>%
plot_ly() %>%
add_pie(values =~Global_Sales,labels=~Genre,
name="Sales by Genre (NA)",colors = myPalette) %>%
layout(title="Sales by Genre (NA)",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Genre) %>%
summarize(sum(JP_Sales)) %>%
rename(
Global_Sales = "sum(JP_Sales)"
)
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ordered <- grouped[order(grouped$Global_Sales), decreasing = FALSE]
ax <- list(
title = "Genre"
)
ay <- list(
title = "Sales"
)
ordered%>%
plot_ly() %>%
add_pie(values =~Global_Sales,labels=~Genre,
name="Sales by Genre (JP)" ,colors = myPalette) %>%
layout(title="Sales by Genre (JP)",
xaxis = ax,
yaxis = ay
)
Hierbei erkennen wir wieder einmal das US und EU recht ähnlich sind wohingegen Japan ein gänzlich anderes Genreshema erkennen lässt. In Japan dominiert Role-Playing welches sich in EU und US nur auf platz 7 befindet.
Nun schauen wir uns die Genreentwicklung über die Jahre an. Hierzu verwenden wir LinePlots.
grouped <- vgsales %>%
group_by(Year, Genre) %>%
dplyr::summarize(Anzahl =n()) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
as.data.frame()
filtered <- grouped %>% select(Year,Genre,Anzahl)
ax <- list(
title = "Year"
)
ay <- list(
title = "Anzahl"
)
filtered %>%
plot_ly() %>%
add_lines(x=~Year,
y=~Anzahl, color=~Genre,colors = myPalette)
grouped <- vgsales %>%
group_by(Year, Genre) %>%
dplyr::summarize(Anzahl =n()) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
as.data.frame()
filtered <- grouped %>% select(Year,Genre,Anzahl)
ax <- list(
title = "Year"
)
ay <- list(
title = "Anzahl"
)
filtered %>%
plot_ly(x = ~Year, y = ~Anzahl, type = 'scatter', mode = 'none', fill = 'tozeroy',color = ~Genre ,colors = myPalette)%>%
layout(title="Amount by Genre from 1980-2016",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Year, Genre) %>%
dplyr::summarize(Anzahl =n()) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
as.data.frame()
filtered <- grouped %>% select(Year,Genre,Anzahl)
ax <- list(
title = "Year"
)
ay <- list(
title = "Anzahl"
)
filtered %>%
plot_ly(x = ~Year, y = ~Anzahl, type = 'scatter', mode = 'none', stackgroup = 'one',color = ~Genre, colors = myPalette)%>%
layout(title="Amount by Genre from 1980-2016",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Year, Genre) %>%
dplyr::summarize(Anzahl =n()) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
as.data.frame()
filtered <- grouped %>% select(Year,Genre,Anzahl)
ax <- list(
title = "Year"
)
ay <- list(
title = "Percent %"
)
filtered %>%
plot_ly(x = ~Year, y = ~Anzahl, type = 'scatter', mode = 'none', stackgroup = 'one',groupnorm = 'percent',color = ~Genre ,colors = myPalette)%>%
layout(title="Marketamount genreshift in % from 1980-2016",
xaxis = ax,
yaxis = ay
)
Hierbei zu erkennen ist Obwohl die Anzahl der Jährlichen Spielereleases über die Jahre hinweg stetig wächst bleiben die Meisten Genres ähnlich viel vertreten. Auffällig sind hierbei Strategy-Games die erst 1991 das erste mal auftretem Seitdem obwohl sie Leicht an Marketshare verlieren grob gleich bleiben. Außerdem sind Action Games die Spiele mit der wohl größten volatilität. Sind es 1982 noch fast 50% der Gamereleases fällt deren aufkommen 1084 schon auf nur noch knapp 10% ab und 1986 steigt der Wert wieder auf fast 30%. Dieser Trend setzt sich fort bis 1996 ab welchem Zeitpunkt sich Action Games von 3.6% über die Jahre bis 2016 bis 35% entwickeln.
Schauen wir uns an wie sich die verkäufe entwickelt haben.
grouped <- vgsales %>%
group_by(Year, Genre) %>%
dplyr::summarize(gr_sum = sum(Global_Sales)) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
as.data.frame()
filtered <- grouped %>% select(Year,Genre,gr_sum)
ax <- list(
title = "Year"
)
ay <- list(
title = "Global_Sales"
)
filtered %>%
plot_ly() %>%
add_lines(x=~Year,
y=~gr_sum, color=~Genre ,colors = myPalette) %>%
layout(title="Sales by Genre from 1980-2016",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Year, Genre) %>%
dplyr::summarize(gr_sum = sum(Global_Sales)) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
as.data.frame()
filtered <- grouped %>% select(Year,Genre,gr_sum)
ax <- list(
title = "Year"
)
ay <- list(
title = "Global_Sales"
)
filtered %>%
plot_ly(x = ~Year, y = ~gr_sum, type = 'scatter', mode = 'none', fill = 'tozeroy',color = ~Genre ,colors = myPalette) %>%
layout(title="Sales by Genre from 1980-2016",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Year, Genre) %>%
dplyr::summarize(gr_sum = sum(Global_Sales)) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
as.data.frame()
filtered <- grouped %>% select(Year,Genre,gr_sum)
ax <- list(
title = "Year"
)
ay <- list(
title = "Global_Sales"
)
filtered %>%
plot_ly(x = ~Year, y = ~gr_sum, type = 'scatter', mode = 'none', stackgroup = 'one',color = ~Genre ,colors = myPalette)%>%
layout(title="Sales by Genre from 1980-2016",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Year, Genre) %>%
dplyr::summarize(gr_sum = sum(Global_Sales)) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
as.data.frame()
filtered <- grouped %>% select(Year,Genre,gr_sum)
ax <- list(
title = "Year"
)
ay <- list(
title = "Percent %"
)
filtered %>%
plot_ly(x = ~Year, y = ~gr_sum, type = 'scatter', mode = 'none', stackgroup = 'one',groupnorm = 'percent',color = ~Genre ,colors = myPalette)%>%
layout(title="Marketshare genreshift in % from 1980-2016",
xaxis = ax,
yaxis = ay
)
Wie zu erwarten lässt sich hier ein Großer overlap zu den Anzahl der Gamereleases feststellen.
Nun stellt sich die Frage hab sich die Verkäufe ähnlich der anzahl der GameReleases entwickelt?
grouped <- vgsales %>%
group_by(Year, Genre) %>%
dplyr::summarize(gr_sum = sum(Global_Sales)/n()) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
as.data.frame()
filtered <- grouped %>% select(Year,Genre,gr_sum)
ax <- list(
title = "Year"
)
ay <- list(
title = "Sales per Game"
)
filtered %>%
plot_ly() %>%
add_lines(x=~Year,
y=~gr_sum, color=~Genre ,colors = myPalette) %>%
layout(title="Sales per Game by Genre from 1980-2016",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Year, Genre) %>%
dplyr::summarize(gr_sum = sum(Global_Sales)/n()) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
as.data.frame()
filtered <- grouped %>% select(Year,Genre,gr_sum)
ax <- list(
title = "Year"
)
ay <- list(
title = "Sales per Game"
)
filtered %>%
plot_ly(x = ~Year, y = ~gr_sum, type = 'scatter', mode = 'none', fill = 'tozeroy',color = ~Genre ,colors = myPalette) %>%
layout(title="Sales per Game by Genre from 1980-2016",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Year, Genre) %>%
dplyr::summarize(gr_sum = sum(Global_Sales)/n()) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
as.data.frame()
filtered <- grouped %>% select(Year,Genre,gr_sum)
ax <- list(
title = "Year"
)
ay <- list(
title = "Sales per Game"
)
filtered %>%
plot_ly(x = ~Year, y = ~gr_sum, type = 'scatter', mode = 'none', stackgroup = 'one',color = ~Genre, colors = myPalette)%>%
layout(title="Sales per Game by Genre from 1980-2016",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Year, Genre) %>%
dplyr::summarize(gr_sum = sum(Global_Sales)/n()) %>% filter(Year!='N/A')%>%filter(Year!=2020) %>% filter(Year!='2017') %>%
as.data.frame()
filtered <- grouped %>% select(Year,Genre,gr_sum)
ax <- list(
title = "Year"
)
ay <- list(
title = "Percent %"
)
filtered %>%
plot_ly(x = ~Year, y = ~gr_sum, type = 'scatter', mode = 'none', stackgroup = 'one',groupnorm = 'percent',color = ~Genre, colors = myPalette)%>%
layout(title="Marketshare in Sales per Game by Genre from 1980-2016",
xaxis = ax,
yaxis = ay
)
Auch hier ist wie erwartet die Entwicklung Prozentual ähnlich sind. Auffällig ist jedoch das Shooter trotz ihrer geringen Vertretung in der Prozentualen Verteilung 1984 sowie 2014,2015 und 2016 die Nase Vorne haben. Platform Games haben 1985,1988 und 1990 die Nase Vorne. Die Hochzeit der Puzzle Games sind unangefochten 1988 mit dem Weltweitbekannten und auf Platz 6 der meistverkauften videospiele: Tetris. Ein genauerer vergleich der Ausschläge mit den dementsprechenden Videospielen wäre hier wünschenswert würde aber das Ausmaß dieser Arbeit sprengen.
Nun stellt sich die Frage wie es mit Genres pro publisher aussieht? Gibt es hier Publisher die verschiedene Genres bevorzugen bzw. deren Bestseller sich in bestimmten Genres Tummeln?
Hierzu verwenden wir ein stacked Bar-Plot. Dazu filtern wir die top 10 Publishern aka Publisher mit min 116 mio in Sales. Dies entfernt natürlich einiges an Information allerdings geht sonst einiges an Übersichtlichkeit verloren. Zusätzlich werden erneut die Worte “Entertainment”, “Interactive”, “Game”, “Games” und “Studios” entfernt.
grouped <- vgsales %>%
group_by(Publisher,Genre) %>%
summarize(sum(Global_Sales)) %>%
rename(
Global_Sales = "sum(Global_Sales)"
)
PublisherSales <- grouped %>%
group_by(Publisher) %>%
summarize(sum(Global_Sales)) %>%
rename(
Global_Sales = "sum(Global_Sales)"
) %>% filter(Global_Sales>300)
grouped <- grouped %>% filter(Publisher %in% PublisherSales$Publisher)
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
grouped$Publisher <-str_remove_all(grouped$Publisher, "Entertainment")
grouped$Publisher <-str_remove_all(grouped$Publisher, "Interactive")
grouped$Publisher <-str_remove_all(grouped$Publisher, "Studios")
grouped$Publisher <-str_remove_all(grouped$Publisher, "Games")
grouped$Publisher <-str_remove_all(grouped$Publisher, "Game")
ax <- list(
title = "Genre"
)
ay <- list(
title = "Sales"
)
grouped%>%
plot_ly(x=~Publisher,
y=~Global_Sales,
type='bar',
color=~Genre, colors = myPalette) %>%
layout(title="Sales by Genre By Publisher",
xaxis = ax,
yaxis = ay,
barmode = 'stack'
)
grouped <- vgsales %>%
group_by(Publisher,Genre) %>%
summarize(Anzahl =n(),sum(Global_Sales)) %>%
rename(
Global_Sales = "sum(Global_Sales)"
)
PublisherSales <- grouped %>%
group_by(Publisher) %>%
summarize(sum(Global_Sales)) %>%
rename(
Global_Sales = "sum(Global_Sales)"
) %>% filter(Global_Sales>300)
grouped <- grouped %>% filter(Publisher %in% PublisherSales$Publisher)
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
grouped$Publisher <-str_remove_all(grouped$Publisher, "Entertainment")
grouped$Publisher <-str_remove_all(grouped$Publisher, "Interactive")
grouped$Publisher <-str_remove_all(grouped$Publisher, "Studios")
grouped$Publisher <-str_remove_all(grouped$Publisher, "Games")
grouped$Publisher <-str_remove_all(grouped$Publisher, "Game")
ax <- list(
title = "Genre"
)
ay <- list(
title = "Amount"
)
grouped%>%
plot_ly(x=~Publisher,
y=~Anzahl,
type='bar',
color=~Genre ,colors = myPalette) %>%
layout(title="Amount by Genre By Publisher",
xaxis = ax,
yaxis = ay,
barmode = 'stack'
)
Bei dem vergleich der Werte ist hier zu bemerken, dass die meisten Publisher Hierbei sich mit der Anzahl der Spiele und den Sales gut abdecken. Die auffälligsten diskrepanzen sind hierbei EA mit dem Sports Genre und ihren järlich releasten Spielen FiFa/NBA2k etc. sowie Nintendo mit der Platformreihe Super Mario. Schauen wir uns diese Beiden Firmen Noch einmal im Detail an.
Hierzu verwenden wir wieder die Bar/Pie chart Combo die uns Bereits aus vorderen Teilen der Ausarbeitung bekannt sind.
grouped <- vgsales %>%
group_by(Publisher,Genre) %>%
summarize(sum(Global_Sales)) %>%
rename(
Global_Sales = "sum(Global_Sales)"
) %>%
filter(Publisher == "Electronic Arts")
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ax <- list(
title = "Genre"
)
ay <- list(
title = "Sales"
)
grouped%>%
plot_ly() %>% add_bars(x=~Genre,
y=~Global_Sales,
color=~Genre ,colors = myPalette) %>%
layout(title="Sales by Genre for Electronic Arts",
xaxis = ax,
yaxis = ay,
barmode = 'stack'
)
grouped <- vgsales %>%
group_by(Publisher,Genre) %>%
summarize(Anzahl =n()) %>%
filter(Publisher == "Electronic Arts")
ax <- list(
title = "Genre"
)
ay <- list(
title = "Amount"
)
grouped%>%
plot_ly() %>% add_bars(x=~Genre,
y=~Anzahl,
color=~Genre ,colors = myPalette) %>%
layout(title="Amount by Genre for Electronic Arts ",
xaxis = ax,
yaxis = ay,
barmode = 'stack'
)
grouped <- vgsales %>%
group_by(Publisher,Genre) %>%
summarize(sum(Global_Sales)) %>%
rename(
Global_Sales = "sum(Global_Sales)"
) %>%
filter(Publisher == "Electronic Arts")
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ax <- list(
title = "Genre"
)
ay <- list(
title = "Sales"
)
grouped%>%
plot_ly() %>%
add_pie(values =~Global_Sales,labels=~Genre,textinfo='label+percent',sort = FALSE,
name="Sales by Genre for Electronic Arts" ,colors = myPalette) %>%
layout(title="Sales by Genre for Electronic Arts",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Publisher,Genre) %>%
summarize(Anzahl =n()) %>%
filter(Publisher == "Electronic Arts")
ax <- list(
title = "Genre"
)
ay <- list(
title = "Amount"
)
grouped%>%
plot_ly() %>%
add_pie(values =~Anzahl,labels=~Genre,textinfo='label+percent',sort = FALSE,
name="Amount by Genre for Electronic Arts" ,colors = myPalette) %>%
layout(title="Amount by Genre for Electronic Arts",
xaxis = ax,
yaxis = ay
)
Schauen wir uns EA hier im Detail an fällt allerdings auf das die Diskrepanz zwischen Sales und Anzahl der Gamereleases für EA bei Sports gar nicht so groß ist (41.5% vs 43.2%). Die größeren diskrepanzen sind hier Shooter welches nur 10% der Gamereleases sind aber gut 15% der Sales und Action mit 13.5% der Gamereleases und 10.4% der Sales.
Schauen wir uns nun Nintendo an.
grouped <- vgsales %>%
group_by(Publisher,Genre) %>%
summarize(sum(Global_Sales)) %>%
rename(
Global_Sales = "sum(Global_Sales)"
) %>%
filter(Publisher == "Nintendo")
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ax <- list(
title = "Genre"
)
ay <- list(
title = "Sales"
)
grouped%>%
plot_ly() %>% add_bars(x=~Genre,
y=~Global_Sales,
color=~Genre ,colors = myPalette) %>%
layout(title="Sales by Genre for Nintendo",
xaxis = ax,
yaxis = ay,
barmode = 'stack'
)
grouped <- vgsales %>%
group_by(Publisher,Genre) %>%
summarize(Anzahl =n()) %>%
filter(Publisher == "Nintendo")
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
## Warning: Unknown or uninitialised column: `Global_Sales`.
ax <- list(
title = "Genre"
)
ay <- list(
title = "Amount"
)
grouped%>%
plot_ly() %>% add_bars(x=~Genre,
y=~Anzahl,
color=~Genre ,colors = myPalette) %>%
layout(title="Amount by Genre for Nintendo",
xaxis = ax,
yaxis = ay,
barmode = 'stack'
)
grouped <- vgsales %>%
group_by(Publisher,Genre) %>%
summarize(sum(Global_Sales)) %>%
rename(
Global_Sales = "sum(Global_Sales)"
) %>%
filter(Publisher == "Nintendo")
grouped$Global_Sales<-as_vector(grouped$Global_Sales)
ax <- list(
title = "Genre"
)
ay <- list(
title = "Sales"
)
grouped%>%
plot_ly() %>%
add_pie(values =~Global_Sales,labels=~Genre,textinfo='label+percent',sort = FALSE,
name="Sales by Genre for Nintendo" ,colors = myPalette) %>%
layout(title="Sales by Genre for Nintendo",
xaxis = ax,
yaxis = ay
)
grouped <- vgsales %>%
group_by(Publisher,Genre) %>%
summarize(Anzahl =n()) %>%
filter(Publisher == "Nintendo")
ax <- list(
title = "Genre"
)
ay <- list(
title = "Amount"
)
grouped%>%
plot_ly() %>%
add_pie(values =~Anzahl,labels=~Genre,textinfo='label+percent',sort = FALSE,
name="Amount by Genre for Nintendo" ,colors = myPalette) %>%
layout(title="Amount by Genre for Nintendo",
xaxis = ax,
yaxis = ay
)
Bei Nintendo zu erkennen ist hier, dass Platform spiele ein Kassenchlager sind. Nehmen diese nur 16% der spielereleases ein so bringen sie dennoch 24% der Sales ein. Gleiches Gilt für Sport games. 8% gegenüber 12%. Action (11% vs 7%), Misc (14% vs 10%) und Puzzle Games (10.5% vs 7%) sind jedoch nicht so erfolgreich.
Ein Vergleich der Ausschläge mit den dementsprechenden Videospielen.
Eine genaue Analyse der Gamesales pro jahr (aka tetrist 1950 30 mal testris 2015 300000 mal) geben die daten nicht her.
eine anylse der Coronapandemie veränderungen (geben die daten nicht her)
Colorbrewer wird nicht in jeder Grafik akzeptiert
Sales pro Game analyse rechnet nicht spiele pro platform zusammen
Created by Florian Reichle
flre0005@hs-kl.de